Optimizing Code by Selecting Compiler Flags using Parallel Genetic Algorithm on Multicore CPUs
نویسندگان
چکیده
The compiler optimization phase ordering not only possesses challenges to compiler developer but also for multithreaded programmer to enhance the performance of Multicore systems. Many compilers have numerous optimization techniques which are applied in predetermined ordering. These ordering of optimization techniques may not always give an optimal code further it is impossible to find a unanimous optimization phase ordering that will produce the best code. Finding an optimal sequence for even a simple code is not easy task since the search space for attempting optimization phase sequences is very huge. The focus of this paper is to implement an optimal compiler phase ordering using parallel genetic algorithm exploiting the advances of parallel programming on Multicore processors. Inherently Genetic algorithms are very well suited for modeling multiple individuals. Three methods were adopted in testing and comparing the performance of the Parallel Benchmark programs, firstly the Benchmarks were compiled without applying optimization flags, next the Benchmarks were compiled by randomly selecting the optimization flags and finally a parallel genetic algorithm was used to set the Compiler optimization flags for compilation. The parallel genetic algorithm outperformed the other two methods in this work. [email protected]
منابع مشابه
OpenCL on shared memory multicore CPUs
Shared memory multicore processor technology is pervasive in mainstream computing. This new architecture challenges programmers to write code that scales over these many cores to exploit the full computational power of these machines. OpenMP and Intel Threading Building Blocks (TBB) are two of the popular frameworks used to program these architectures. Recently, OpenCL has been defined as a sta...
متن کاملOpenCL for programming shared memory multicore CPUs
Shared memory multicore processor technology is pervasive in mainstream computing. This new architecture challenges programmers to write code that scales over these many cores to exploit the full computational power of these machines. OpenMP and Intel Threading Building Blocks (TBB) are two of the popular frameworks used to program these architectures. Recently, OpenCL has been defined as a sta...
متن کاملPatterns and Rewrite Rules for Systematic Code Generation (From High-Level Functional Patterns to High-Performance OpenCL Code)
Computing systems have become increasingly complex with the emergence of heterogeneous hardware combining multicore CPUs and GPUs. These parallel systems exhibit tremendous computational power at the cost of increased programming effort. This results in a tension between achieving performance and code portability. Code is either tuned using device-specific optimizations to achieve maximum perfo...
متن کاملenDebug: A hardware-software framework for automated energy debugging
Energy consumption by software applications is one of the critical issues that determine the future of multicore software development. Inefficient software has been often cited as a major reason for wasteful energy consumption in computing systems. Without adequate tools, programmers and compilers are often left to guess the regions of code to optimize, that results in frustrating and unfruitfu...
متن کاملÆminiumGPU: An Intelligent Framework for GPU Programming
As a consequence of the immense computational power available in GPUs, the usage of these platforms for running data-intensive general purpose programs has been increasing. Since memory and processor architectures of CPUs and GPUs are substantially different, programs designed for each platform are also very different and often resort to a very distinct set of algorithms and data structures. Se...
متن کامل